/**
 * 
 */
package com.acc.softmgr.common.genertor.utils;

import org.apache.commons.lang.StringUtils;

/**
 * 
 * @content 通用的工具类
 * 
 * @date 2017年6月3日
 * 
 * @author OprCalf
 * 
 */
public class CommUtil {

	/**
	 * 
	 * 格式化名称,字符串第一个字母小写,如果存在_,后面第一个字母为大写，
	 * 
	 */
	public static String formatName(String name) {
		String[] split = name.split("_");
		if (split.length > 1) {
			StringBuffer sb = new StringBuffer();
			for (int i = 0; i < split.length; i++) {
				String tempName = "";
				if (i == 0) {
					tempName = split[0].substring(0, 1).toLowerCase() + split[0].substring(1, split[0].length());
					sb.append(tempName);
					continue;
				}
				tempName = split[i].substring(0, 1).toUpperCase() + split[i].substring(1, split[i].length());
				sb.append(tempName);
			}

			return sb.toString();
		}
		String tempName = split[0].substring(0, 1).toLowerCase() + split[0].substring(1, split[0].length());
		return tempName;
	}

	/**
	 * 
	 * 格式化表名,字符串第一个字母大写,如果存在_,后面第一个字母为大写， 用于做类名
	 */
	public static String formatTableNameToClassName(String name) {
		String[] split = name.split("_");
		if (split.length > 1) {
			StringBuffer sb = new StringBuffer();
			for (int i = 0; i < split.length; i++) {
				String tempName = split[i].substring(0, 1).toUpperCase() + split[i].substring(1, split[i].length());
				sb.append(tempName);
			}

			return sb.toString();
		}
		String tempName = split[0].substring(0, 1).toUpperCase() + split[0].substring(1, split[0].length());
		return tempName;
	}

	/**
	 * 
	 * 获取空值
	 * 
	 */
	public static String getNullAble(String nullable) {
		if (("YES".equals(nullable)) || ("yes".equals(nullable)) || ("y".equals(nullable)) || ("Y".equals(nullable))) {
			return "Y";
		}
		if (("NO".equals(nullable)) || ("N".equals(nullable)) || ("no".equals(nullable)) || ("n".equals(nullable))) {
			return "N";
		}
		return null;
	}

	/**
	 * 
	 * 获取项目的目录
	 * 
	 */
	public static String getProjectPath() {
		String path = System.getProperty("user.dir").replace("\\", "/") + "/";
		return path;
	}

	/**
	 * 
	 * 类型转换
	 * 
	 */
	public static String getType(String dataType, String precision, String scale) {
		dataType = dataType.toLowerCase();
		if (dataType.contains("char") || dataType.contains("text"))
			dataType = "java.lang.String";
		else if (dataType.contains("bit"))
			dataType = "java.lang.Boolean";
		else if (dataType.contains("bigint"))
			dataType = "java.lang.Long";
		else if (dataType.contains("int"))
			dataType = "java.lang.Integer";
		else if (dataType.contains("float"))
			dataType = "java.lang.Float";
		else if (dataType.contains("double"))
			dataType = "java.lang.Double";
		else if (dataType.contains("number")) {
			if ((StringUtils.isNotBlank(scale)) && (Integer.parseInt(scale) > 0))
				dataType = "java.math.BigDecimal";
			else if ((StringUtils.isNotBlank(precision)) && (Integer.parseInt(precision) > 6))
				dataType = "java.lang.Long";
			else
				dataType = "java.lang.Integer";
		} else if (dataType.contains("decimal"))
			dataType = "BigDecimal";
		else if (dataType.contains("date"))
			dataType = "java.util.Date";
		else if (dataType.contains("time"))
			dataType = "java.sql.Timestamp";
		else if (dataType.contains("clob"))
			dataType = "java.sql.Clob";
		else {
			dataType = "java.lang.Object";
		}
		return dataType;
	}

	public static void main(String[] args) {
		System.out.println(formatName("Aas_df"));
		System.out.println(formatTableNameToClassName("Aas_df"));
	}

}
